package se.webbzon.oschi01.worldobject.appearance;

import javax.media.j3d.BranchGroup;
import javax.media.j3d.Transform3D;

public interface Appearance3D {
	
	/*============================================================
	Public Methods
	============================================================*/
	
	/** This method is invoked when the WorldArea performs a regular global step. **/
	public void onStepEnd();
	
	/** Sets the animation of the appearance. **/
	public void setAnimation(Animation3D animation);
	
	/** Returns the animation of the appearance. **/
	public Animation3D getAnimation();
	
	/** Copies the transform of the appearance to the given Transform3D. **/
	public void getTransform(Transform3D transform);
	
	/** Sets the transform of the appearance and updates the java3d appearance. **/
	public void setTransform(Transform3D transform);
	
	/** Returns the rendering order number of this Appearance3D. If the
	 * appearance is rendered in a WorldAreaView which supports AUTOMATIC_ORDER
	 * then the appearance with the highest rendering order will be rendered last. **/
	public int getRenderingOrder();
	
	/** Returns the visibility of the Appearance3D. **/
	public abstract boolean getVisible();
	
	/** Sets the visibility of the Appearance3D. **/
	public abstract void setVisible(boolean visible);
	
	/** Returns the java3d branch group associated with this Appearance3D. **/
	public BranchGroup getJ3dBranch();

}
